Button Command এবং RelayCommand ব্যবহার

Microsoft Technologies - এমভিভিএম (MVVM) Command Binding এবং Event Handling |
234
234

MVVM প্যাটার্নে Button Command এবং RelayCommand দুটি গুরুত্বপূর্ণ কনসেপ্ট। এগুলি ViewModel-এ বিজনেস লজিক বা অ্যাকশন সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়, যাতে View-এ UI ইন্টারঅ্যাকশনের মাধ্যমে কার্যক্রম শুরু করা যায়। এই প্যাটার্নটি View এবং ViewModel এর মধ্যে পরিষ্কার বিভাজন বজায় রাখে এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।


Button Command

Button Command হল একটি কৌশল যার মাধ্যমে একটি বাটনের ক্লিক ইভেন্ট পরিচালনা করা হয়, যা মূলত ViewModel-এ থাকা কোনো কমান্ডের সাথে বাইন্ড করা হয়। এই পদ্ধতিতে View থেকে ViewModel-এ কাজের নির্দেশ পাঠানো হয়, এবং এতে ViewModel কোডের মাধ্যমে কার্যক্রম সম্পাদিত হয়।

Button Command ব্যবহারের প্রক্রিয়া:

  1. ViewModel-এ Command প্রপার্টি তৈরি: প্রথমে RelayCommand বা অন্যান্য কমান্ড ক্লাস ব্যবহার করে ViewModel-এ একটি কমান্ড প্রপার্টি তৈরি করতে হয়।
  2. View-এ Button কমান্ড বাইন্ডিং: এরপর View-এ কমান্ড প্রপার্টি বাইন্ড করা হয়, যাতে বাটনে ক্লিক করলে সেই কমান্ড কার্যকর হয়।

উদাহরণ:

ধরা যাক, আমরা একটি LoginCommand তৈরি করতে যাচ্ছি যা Login বাটন ক্লিক করলে ViewModel-এ থাকা একটি মেথড কল করবে।

public class LoginViewModel
{
    private ICommand _loginCommand;

    // ICommand প্রপার্টি
    public ICommand LoginCommand
    {
        get
        {
            if (_loginCommand == null)
            {
                _loginCommand = new RelayCommand(Login, CanLogin);
            }
            return _loginCommand;
        }
    }

    // Login অ্যাকশন
    private void Login(object parameter)
    {
        // এখানে Login লজিক থাকবে
        Console.WriteLine("User logged in successfully.");
    }

    // Login কি সম্ভব তা চেক করা
    private bool CanLogin(object parameter)
    {
        // যদি ইউজারনেম এবং পাসওয়ার্ড ভ্যালিড হয়, তবেই লগইন সম্ভব
        return !string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(Password);
    }

    // User credentials
    public string Username { get; set; }
    public string Password { get; set; }
}

এখানে, RelayCommand ক্লাসের মাধ্যমে LoginCommand কমান্ড তৈরি করা হয়েছে। এই কমান্ডের দুটি অংশ রয়েছে:

  • Login: যেখানে লগইন লজিক থাকে।
  • CanLogin: যা চেক করে লগইন করা যাবে কিনা (যেমন, ইউজারনেম এবং পাসওয়ার্ড ফিল্ডের অবস্থা)।

View-এ Button কমান্ড বাইন্ডিং:

এখন XAML এ এই কমান্ডটি বাইন্ড করা হবে:

<Button Content="Login" Command="{Binding LoginCommand}" />

এখানে, Button এর Command প্রপার্টি LoginCommand-এর সাথে বাইন্ড করা হয়েছে, যাতে বাটন ক্লিক করলে LoginCommand এর Execute মেথড চালু হয়।


RelayCommand

RelayCommand হল একটি কাস্টম কমান্ড ক্লাস যা সাধারণত MVVM প্যাটার্নে ব্যবহৃত হয়। এটি ICommand ইন্টারফেসের একটি সাধারণ বাস্তবায়ন (implementation), যা ViewModel থেকে UI ইন্টারঅ্যাকশনের সাথে যুক্ত কাজগুলো (যেমন বাটন ক্লিক) পরিচালনা করতে সাহায্য করে।

RelayCommand সাধারণত দুইটি প্যারামিটার নেয়:

  • একটি অ্যাকশন (Action) যা কমান্ডের কার্যক্রম হবে।
  • একটি ফাংশন (Func) যা নির্ধারণ করবে কমান্ডটি কার্যকর হবে কিনা (যেমন, CanExecute ফাংশন)।

RelayCommand ক্লাস:

public class RelayCommand : ICommand
{
    private readonly Action<object> _execute;
    private readonly Predicate<object> _canExecute;

    public RelayCommand(Action<object> execute, Predicate<object> canExecute = null)
    {
        _execute = execute ?? throw new ArgumentNullException(nameof(execute));
        _canExecute = canExecute;
    }

    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    }

    public bool CanExecute(object parameter)
    {
        return _canExecute == null || _canExecute(parameter);
    }

    public void Execute(object parameter)
    {
        _execute(parameter);
    }
}

এখানে:

  • _execute: এটি Action যা কমান্ডটি কার্যকর করার জন্য ব্যবহার হয় (যেমন, লগইন প্রক্রিয়া)।
  • _canExecute: এটি Predicate যা চেক করে যে, কমান্ডটি কার্যকর হওয়া উচিত কি না (যেমন, ইনপুট ফিল্ডের মান ভ্যালিড কিনা)।

Button Command এবং RelayCommand এর সুবিধা

  • Separation of Concerns: View এবং ViewModel এর মধ্যে পরিষ্কার বিভাজন তৈরি হয়। View শুধুমাত্র UI কাজ করে এবং ViewModel-এ লজিক থাকে।
  • Testability: RelayCommand এর মাধ্যমে কোড টেস্টিং সহজ হয় কারণ এটি UI-র সাথে সরাসরি সংযুক্ত নয়।
  • Reusability: একবার RelayCommand তৈরি করা হলে, এটি বিভিন্ন UI উপাদানে ব্যবহার করা যায়।
  • Decoupling: View এবং ViewModel একে অপরের থেকে আলাদা থাকে, ফলে পরিবর্তন করতে গেলে কোডের এক জায়গায় কাজ করা যথেষ্ট।

উপসংহার

Button Command এবং RelayCommand MVVM প্যাটার্নে UI ইন্টারঅ্যাকশনের সাথে বিজনেস লজিকের সংযোগকে সহজ করে তোলে এবং কোডের পুনঃব্যবহারযোগ্যতা, টেস্টেবিলিটি এবং মেইনটেনেবল কোড নিশ্চিত করতে সাহায্য করে। RelayCommand ক্লাসের মাধ্যমে ICommand ইন্টারফেসের কার্যকরী বাস্তবায়ন করা হয়, যা ViewModel এবং View এর মধ্যে যোগাযোগ সহজ করে দেয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion